C:printf("是否继续:是(y),否(n):")

来源:百度知道 编辑:UC知道 时间:2024/05/10 07:16:22
请高手帮忙啊!
当输入y后,我认为只应该产生一个随机数,但是它产生了两个,是为什么?printf("是否继续:是(y),否(n):")这条语句,为什么会执行两次的,好像是scanf:语句没有执行,请问是什么问题啊????

#include<stdio.h>
#include<stdlib.h>
void main()
{
int k;
char m;
bool b=true;
while(b)
{
k=rand()%13;
if(k==1)
printf("A\n");
else if(k==11)
printf("J\n");
else if(k==12)
printf("Q\n");
else if(k==0)
printf("K\n");
else
printf("%d\n",k);
printf("是否继续:是(y),否(n):");
scanf("%c",&m);
if(m=='n')
b=false;
}
}

这样改一下 加上一句清除文件缓冲区就好了

printf("%d\n",k);
printf("是否继续:是(y),否(n):");
fflush(stdin);
scanf("%c",&m);

我想你是用VC的,如果用VC的话,即使没有
printf("是否继续:是(y),否(n):");
scanf("%c",&m);
这一段,它也会提示你是否继续操作的,
现在你有了这一段,再加上VC的提示,就会有两个提示了
产生两个随机数,我想是因为循环了两次